100 CALL CLEAR
110 CALL CHAR(136,"BBBB00EEEE007777")
120 CALL CHAR(128,"383C197E983C2424")
130 CALL CHAR(120,"14A4AA74585C7C38")
140 CALL CHAR(112,"00701C30787C3C18")
150 CALL CHAR(129,"1C3C987E193C2424")
160 CALL CHAR(130,"5A5A427E5A7E6666")
170 CALL CHAR(104,"427E4242427E4242")
180 CALL CHAR(96,"4C587878584C4040")
190 CALL CHAR(137,"7E3E0E06060E3E7E")
200 CALL CHAR(138,"1E0602000002061E")
210 CALL CHAR(131,"FFABD5FF")
220 CALL CHAR(132,"5A5A427E183C2424")
230 CALL SCREEN(2)
240 CALL COLOR(14,5,1)
250 CALL COLOR(13,9,1)
260 CALL COLOR(12,15,1)
270 CALL COLOR(11,11,1)
280 CALL COLOR(10,13,1)
290 CALL COLOR(9,14,1)
300 GOSUB 3200
310 CALL CLEAR
320 OM=2
330 BON=0
340 DIM O(1),P(13,1),PY(16,1),PG(15,1),PF(1)
350 O(0)=15
360 FOR I=3 TO 10
370 P(I-3,0)=I
380 NEXT I
390 FOR I=9 TO 4 STEP-1
400 P(17-I,0)=I
410 NEXT I
420 O(1)=9
430 FOR I=28 TO 23 STEP-1
440 P(28-I,1)=I
450 NEXT I
460 FOR I=23 TO 28
470 P(I-16,1)=I
480 NEXT I
490 P(13,1)=28
500 P(6,1)=23
510 PX=16
520 PY(0,0)=17
530 PY(0,1)=136
540 FOR I=17 TO 10 STEP-1
550 PY(18-I,0)=I
560 PY(18-I,1)=32
570 NEXT I
580 FOR I=10 TO 17
590 PY(I-1,0)=I
600 PY(I-1,1)=136
610 NEXT I
620 PF(0)=20
630 FOR I=17 TO 25
640 PG(I-17,0)=I
650 NEXT I
660 FOR I=24 TO 18 STEP-1
670 PG(33-I,0)=I
680 NEXT I
690 PF(1)=21
700 FOR I=29 TO 21 STEP-1
710 PG(29-I,1)=I
720 NEXT I
730 FOR I=22 TO 28
740 PG(I-13,1)=I
750 NEXT I
760 RESTORE
770 READ A
780 FOR F=1 TO A
790 READ B,C,G
800 CALL HCHAR(B,C,136,G)
810 NEXT F
820 READ A
830 FOR F=1 TO A
840 READ B,C,G
850 CALL VCHAR(B,C,104,G)
860 NEXT F
870 READ A
880 FOR F=1 TO A
890 READ B,C
900 CALL HCHAR(B,C,112,1)
910 NEXT F
920 READ A
930 FOR F=1 TO A
940 READ B,C
950 CALL HCHAR(B,C,136,1)
960 NEXT F
970 READ A
980 FOR F=1 TO A
990 READ B,C
1000 CALL HCHAR(B,C,96,1)
1010 NEXT F
1020 IF LEV=0 THEN 1080
1030 READ A
1040 FOR F=1 TO A
1050 READ B,C
1060 CALL HCHAR(B,C,120,1)
1070 NEXT F
1080 CALL HCHAR(O(0),P(0,0),120,1)
1090 CALL HCHAR(O(1),P(0,1),120,1)
1100 CALL HCHAR(22,19,131,1)
1110 CALL HCHAR(12,5,131,1)
1120 CALL HCHAR(12,17,131,3)
1130 CALL HCHAR(2,29,129,OM)
1140 DATA 19,8,17,6,12,5,8,14,1,13,13,28,5,12,15,12,14,20,7,16,20,3,17,23,9,20,1,13,19,19
1150 DATA 14,18,1,19,16,1,17,22,1,32,5,23,10,10,21,12,5,1,18,3,27,6,7,2,13,9,2,13
1160 DATA 17,19,4,3,19,14,3,15,20,4,17,9,3,16,7,2,14,30,3,12,28,5,13,23,4,10,9
1170 DATA 4,11,13,3,6,15,6,4,7,3,8,3,6,4,22,6,4,19,4,9,31,4,3,26,2
1180 DATA 12,4,29,21,3,21,7,21,10,21,13,8,4,10,7,11,11,9,29,11,16,7,20,15,11
1190 DATA 6,4,24,17,19,20,30,20,32,21,30,21,32
1200 DATA 6,10,5,9,17,14,16,15,2,13,20,14,29
1210 DATA 7,11,7,11,20,17,17,16,24,4,23,12,29,18,22
1220 AXE=0
1230 X=2
1240 ID=0
1250 IN=0
1260 IM=0
1270 Y=29
1280 II=0
1290 CALL HCHAR(X,Y,129,1)
1300 CALL KEY(3,KE,ST)
1310 IF ST=0 THEN 1580
1320 IF KE=47 THEN 1600
1330 IF(KE=46)*(X=21)*(Y>28)THEN 2520
1340 IF(KE=83)+(KE=68)THEN 1460
1350 IF(KE<>69)*(KE<>88)THEN 1580
1360 XX=(KE=69)-(KE=88)
1370 CALL GCHAR(X+XX,Y,CA)
1380 IF CA<>104 THEN 1580
1390 CALL SOUND(-20,-1,0)
1400 CALL HCHAR(X,Y,CV,1)
1410 CV=32-72*(CA=104)
1420 X=X+XX
1430 CALL HCHAR(X,Y,130,1)
1440 GOSUB 2030
1450 GOTO 1300
1460 YY=(KE=68)*(Y<32)-(KE=83)*(Y>1)
1470 CALL GCHAR(X,Y+YY,CA)
1480 CALL GCHAR(X+1,Y+YY,CR)
1490 IF CA>135 THEN 1580
1500 BON=BON-(CA=112)
1510 CALL HCHAR(X,Y,CV,1)
1520 CV=32-72*(CA=104)
1530 Y=Y+YY
1540 CALL HCHAR(X,Y,128-(YY=-1),1)
1550 IF CA<>96 THEN 1570
1560 GOSUB 2680
1570 IF(CR=120)+(CR=112)+(CR<33)+(CA=120)THEN 2740
1580 GOSUB 2030
1590 GOTO 1300
1600 CALL KEY(1,KE,ST)
1610 CW=128-(KE=2)
1620 CALL GCHAR(X-1,Y,CA)
1630 IF CA=136 THEN 1580
1640 IF CA=120 THEN 2810
1650 BON=BON-(CA=112)
1660 CALL SOUND(-500,700,0)
1670 CALL HCHAR(X,Y,CV,1)
1680 CV=32-72*(CA=104)
1690 X=X-1
1700 CALL HCHAR(X,Y,CW,1)
1710 IF CA<>96 THEN 1730
1720 GOSUB 2680
1730 IF ST=0 THEN 1890
1740 YY=(KE=3)*(Y<31)-(KE=2)*(Y>1)
1750 IF YY=0 THEN 1890
1760 FOR Q=1 TO 2
1770 CALL GCHAR(X,Y+YY,CA)
1780 IF CA=136 THEN 1890
1790 IF CA=120 THEN 2810
1800 BON=BON-(CA=112)
1810 CALL SOUND(-500,700-100*Q,0)
1820 CALL HCHAR(X,Y,CV,1)
1830 CV=32-72*(CA=104)
1840 Y=Y+YY
1850 CALL HCHAR(X,Y,CW,1)
1860 IF CA<>96 THEN 1880
1870 GOSUB 2680
1880 NEXT Q
1890 FOR Q=1 TO 3
1900 CALL GCHAR(X+1,Y,CA)
1910 IF CA=120 THEN 2810
1920 IF(CA>32)*(CA<>112)THEN 1580
1930 BON=BON-(CA=112)
1940 CALL SOUND(-500,510-100*Q,0)
1950 CALL HCHAR(X,Y,CV,1)
1960 CV=32-72*(CA=104)
1970 X=X+1
1980 CALL HCHAR(X,Y,CW,1)
1990 IF CA<>96 THEN 2010
2000 GOSUB 2680
2010 NEXT Q
2020 GOTO 2740
2030 IF X>18 THEN 2250
2040 IF X<13 THEN 2380
2050 IF Y>23 THEN 2140
2060 CALL HCHAR(O(0),P(IN,0),32,1)
2070 IN=-(IN+1)*(IN<13)
2080 CALL HCHAR(O(0),P(IN,0),120,1)
2090 IF(O(0)=X)*(P(IN,0)=Y)THEN 2810
2100 CALL HCHAR(PX,PY(IR,0),PY(IR,1),1)
2110 IF(PX-1=X)*(PY(IR,0)=Y)*(PY(IR,1)=32)THEN 2810
2120 IR=-(IR+1)*(IR<16)
2130 RETURN
2140 DU=-(DU=0)
2150 IF DU=1 THEN 2240
2160 CALL VCHAR(14,30+D,32,2)
2170 CALL HCHAR(16,30+D,120,1)
2180 IF(X>13)*(X<17)*(Y=30+D)THEN 2810
2190 D=-(D=0)
2200 CALL VCHAR(14,30+D,104,3)
2210 IF ST<>0 THEN 2240
2220 FOR DE=1 TO 10
2230 NEXT DE
2240 RETURN
2250 CALL HCHAR(22,19,32+99*D,1)
2260 CALL HCHAR(PF(ID),PG(IM,ID),32,1)
2270 IG=-(IM+1)*(IM<15)
2280 CALL HCHAR(PF(ID),PG(IG,ID),120,1)
2290 IF(PF(ID)=X)*(PG(IG,ID)=Y)THEN 2810
2300 IF ID<1 THEN 2320
2310 IM=-(IM+1)*(IM<15)
2320 ID=-(ID+1)*(ID<1)
2330 IF D=0 THEN 2350
2340 IF(X=21)*((Y=16)+(Y=19))THEN 2810
2350 CALL VCHAR(19,16,32+104*D,3)
2360 D=-(D=0)
2370 RETURN
2380 IF Y<21 THEN 2440
2390 CALL HCHAR(O(1),P(IE,1),32,1)
2400 IE=-(IE+1)*(IE<13)
2410 CALL HCHAR(O(1),P(IE,1),120,1)
2420 IF(O(1)=X)*(P(IE,1)=Y)THEN 2810
2430 RETURN
2440 DU=-(DU=0)
2450 IF DU=1 THEN 2510
2460 IF D=1 THEN 2480
2470 IF(X=11)*((Y=5)+(Y>16)*(Y<20))THEN 2810
2480 CALL HCHAR(12,5,32+99*D,1)
2490 CALL HCHAR(12,17,32+99*D,3)
2500 D=-(D=0)
2510 RETURN
2520 IF AXE=0 THEN 1300
2530 AXE=AXE-1
2540 CALL SOUND(-200,-6,0)
2550 IF STA>0 THEN 2580
2560 CALL HCHAR(21,30+SE,137,1)
2570 GOTO 2650
2580 IF STA>1 THEN 2610
2590 CALL HCHAR(21,30+SE,138,1)
2600 GOTO 2650
2610 CALL HCHAR(21,30+SE,32,1)
2620 IF SE=2 THEN 2880
2630 STA=-1
2640 SE=2
2650 STA=STA+1
2660 GOSUB 2030
2670 GOTO 1340
2680 IF(LEV=0)+(AXE<3)THEN 2710
2690 CV=96
2700 RETURN
2710 AXE=AXE+1
2720 CALL SOUND(-100,1700,0)
2730 RETURN
2740 CALL SOUND(-1000,110,0)
2750 CALL GCHAR(X+1,Y,CA)
2760 IF(CA>32)+(X+1>22)THEN 2820
2770 CALL HCHAR(X,Y,32,1)
2780 X=X+1
2790 CALL HCHAR(X,Y,132,1)
2800 GOTO 2740
2810 CALL SOUND(1000,110,0)
2820 CALL HCHAR(X,Y,32,1)
2830 X=2
2840 Y=30
2850 OM=OM-1
2860 IF OM=0 THEN 3050
2870 GOTO 1300
2880 CALL CLEAR
2890 PRINT "       SCORE :";BON*100: :
2900 FOR Q=910 TO 210 STEP-100
2910 CALL SOUND(100,Q,10)
2920 PRINT
2930 NEXT Q
2940 PRINT
2950 FOR Q=0 TO 30 STEP 2
2960 CALL SOUND(-20,-6,Q)
2970 NEXT Q
2980 LEV=LEV+1
2990 STA=0
3000 SE=0
3010 FOR I=1 TO 1000
3020 NEXT I
3030 CALL CLEAR
3040 GOTO 350
3050 CALL CLEAR
3060 PRINT "HAI PERSO TUTTI GLI OMINI": : :"       SCORE :";BON*100
3070 FOR Q=910 TO 210 STEP-100
3080 CALL SOUND(100,Q,10)
3090 PRINT
3100 NEXT Q
3110 PRINT
3120 FOR Q=0 TO 30 STEP 2
3130 CALL SOUND(-20,-6,Q)
3140 NEXT Q
3150 PRINT "  PREMI <S> PER RIPROVARE"
3160 CALL KEY(3,K,S)
3170 IF(S=0)*(K<>83)*(K<>78)THEN 3160
3180 IF K=83 THEN 310
3190 END
3200 RESTORE 3460
3210 FOR I=42 TO 90
3220 READ A$
3230 CALL CHAR(I,A$)
3240 NEXT I
3250 PRINT TAB(7);"M.M.G.  SOFTWARE": :TAB(11);"PRESENTS": : : : : : : :TAB(7);"T H E    C A V E": : : :
3260 PRINT TAB(14);"BY": :TAB(8);"BOTTIN G.PAOLO": : : : : : :TAB(4);"PRESS ANY KEY TO BEGIN";
3270 FOR I=1 TO 8
3280 CALL COLOR(I,3,1)
3290 NEXT I
3300 CALL KEY(3,K,S)
3310 IF S=0 THEN 3300
3320 CALL CLEAR
3330 PRINT :"SCOPO DEL GIOCO E'  :": :"RACCOGLIERE I 6 PICCONI <`>": :"PER SFONDARE I DUE MURI IN": :
3340 PRINT "BASSO A DESTRA": :"ATTENZIONE  AI TRABOCHETTI": :"E ALLE MINE VAGANTI <x>": :"I FRUTTI <p>TI DARANNO PUNTI"
3350 PRINT : :"DAL SECONDO QUADRO IN POI": :"COMPARIRANNO ANCHE DELLE": :"MINE FISSE E NON POTRAI": :
3360 PRINT "TRASPORTARE PIU' DI TRE": :"PICCONI";
3370 CALL KEY(3,K,S)
3380 IF S=0 THEN 3370
3390 CALL CLEAR
3400 PRINT :"MOVIMENTI  :": :"I TASTI DELLE FRECCE PIU' :": : :"<S>,<D> E CONTEMPORANEAMENTE": :
3410 PRINT "</> PER SALTARE RISPETTIVA-": :"MENTE A DESTRA E A SINISTRA": : : :"<.> PER USARE I PICCONI AL": :
3420 PRINT "MOMENTO OPPORTUNO": : : : : :"PREMI UN TASTO PER INIZIARE"
3430 CALL KEY(3,K,S)
3440 IF S=0 THEN 3430
3450 RETURN
3460 DATA "00004830CC3048","000010107C101000","0000000000301020","000000007C000000","0000000000003030"
3470 DATA "0004081020408000","3844444444444438","103050101010107C","78840408102040FC","7884043804048478"
3480 DATA "0C14244484FC0404","F88080F804048478","788080F884848478","FC04040810204040","7884847884848478"
3490 DATA "788484847C040478","0030300000303000","0030300000301020","0008102040201008","0000007C007C0000"
3500 DATA "0040201008102040","3844040810100010","0078849CA498807C","78848484FC848484","F8444478444444F8"
3510 DATA "7884808080808478","F8444444444444F8","FC8080F0808080FC","FC8080F080808080","788480809C848478"
3520 DATA "848484FC84848484","7C1010101010107C","0404040404848478","8890A0C0A0908884","404040404040407C"
3530 DATA "84CCB48484848484","84C4A4948C848484","FC848484848484FC","F8848484F8808080","7884848484948874"
3540 DATA "F8848484F8908884","7884807804048478","7C10101010101010","8484848484848478","4444444428281010"
3550 DATA "8484848484B4CC84","8484483030488484","4444442810101010","FC040810204080FC"
